#!/bin/bash

echo "=== 机器人创新实验室网站 - 优化安装脚本 ==="

# 检查系统资源
echo "检查系统资源..."
free -h
df -h

# 增加swap空间
echo "检查并增加swap空间..."
if [ ! -f /swapfile ]; then
    echo "创建2GB swap文件..."
    sudo fallocate -l 2G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
else
    echo "Swap文件已存在，启用swap..."
    sudo swapon /swapfile
fi

# 清理系统缓存
echo "清理系统缓存..."
sudo sync
sudo echo 3 > /proc/sys/vm/drop_caches

# 设置npm配置优化内存使用
echo "配置npm优化参数..."
npm config set maxsockets 3
npm config set registry https://registry.npmmirror.com
npm config set network-timeout 300000

# 清理npm缓存
echo "清理npm缓存..."
npm cache clean --force

# 创建必要目录
echo "创建项目目录..."
mkdir -p data uploads logs

# 分阶段安装依赖
echo "分阶段安装依赖包..."

# 第一阶段：核心依赖
echo "安装核心依赖..."
npm install --registry=https://registry.npmmirror.com  --no-optional --maxsockets=1 \
    next@14.0.4 \
    react@18.2.0 \
    react-dom@18.2.0

# 第二阶段：数据库和认证
echo "安装数据库依赖..."
npm install --registry=https://registry.npmmirror.com  --no-optional --maxsockets=1 \
    sqlite3@5.1.7 \
    bcryptjs@2.4.3 \
    jsonwebtoken@9.0.2

# 第三阶段：Express相关
echo "安装Express依赖..."
npm install --no-optional --maxsockets=1 --registry=https://registry.npmmirror.com \
    express@4.18.2 \
    express-session@1.17.3 \
    express-rate-limit@6.7.0 \
    helmet@6.1.5 \
    multer@1.4.5-lts.1

# 第四阶段：其他依赖
echo "安装其他依赖..."
npm install --no-optional --maxsockets=1 --registry=https://registry.npmmirror.com

echo "依赖安装完成！"

# 初始化数据库
echo "初始化数据库..."
node scripts/init-db.js

echo "=== 安装完成 ==="
echo "运行命令启动服务："
echo "npm run build && npm run start:prod"
